<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<script>
			//abs()函数实际上是一个函数对象，而函数名abs可以视为指向该函数的变量
//			function abs(x) {
// 			   if (x >= 0) {
//      			return x;
//  			} else {
//      			return -x;
//  			}
//			}
			
			//function (x) { ... }是一个匿名函数，它没有函数名。但是，这个匿名函数赋值给了变量abs，所以，通过变量abs就可以调用该函数。
			var abs = function(x) {
				if (x >= 0) {
					return x;
				} else { 
					return -x;
				}
			};
			
			//由于JavaScript允许传入任意个参数而不影响调用，因此传入的参数比定义的参数多也没有问题，虽然函数内部并不需要这些参数：
			console.log(abs(11,10,1));
			console.log(abs());
			//JavaScript还有一个免费赠送的关键字arguments，它只在函数内部起作用，并且永远指向当前函数的调用者传入的所有参数。arguments类似Array但它不是一个Array：
			function foo(x) {
			    console.log(x); // 10
			    for (var i=0; i<arguments.length; i++) {
			        console.log(arguments[i]); 
    			}
			}
			
			foo(10, 20, 30);
		</script>
	</body>
</html>
